![IncrediBuildでFailed to Connect to Coordinatorのエラーが出たので原因を調査してみた](https://devio2023-media.developers.io/wp-content/uploads/2022/01/210131_incredibuild_logo.png)
IncrediBuildでFailed to Connect to Coordinatorのエラーが出たので原因を調査してみた
最近名字が変わりました。コンサルティング部の五十嵐です。
みなさんはIncrediBuild使ってますか?IncrediBuildは複数端末のIdleCPUに対して演算処理を分散させる事で高速なビルド処理を実現するイスラエル発のソフトウェアになります。日本でもゲーム会社様で多くの活用事例が挙げられています。
今回はIncrediBuildを検証環境で試用していた時に遭遇したfailed to connect to coordinatorについて原因を調査した記事になります。
結論から
エラー原因は凡ミスでした。恥ずかしい…。でも小一時間悩んだのでまとめました。えらい。
CoordinatorでAgentとの通信を暗号化するEncryption Communicationを有効化した状態で、Secured PortをCoordinatorのセキュリティグループで許可していないのが原因でした。
構成について
IncrediBuildのバージョンは10.1.2を使用しています。
今回の事象について
IncrediBuild CoordinatorではIncrediBuild Agentの一覧やCoordinatorの設定をCoordinator UIで確認する事が出来ます。Coordinator UIでAgent一覧を確認していると、ビルド実行元であるInitiatorが約30秒間隔でグレーアウトし、Online Machineとして認識していない事に気付きました。
試しにInitiatorのAgent SettingからCoordinatorへの接続を確認すると、問題なく接続が出来ていました。
ですが、Initiatorでビルドを実行するとBuild Monitorにfailed to connect to coordinatorと表示され、IncrediBuildがスタンドアロンで動作し、Helper Agentで分散ビルドが実行出来ない状態となっていました。
原因調査
Failed to Connect to Coodinatorについて調べているとC++パッケージ不足や再インストール等を実施する事で解消する記事が幾つかあったので、手始めにInitiatorとCoordinatorでIncrediBuildのRepair Installを試してみましたが状況変わらず。
Coordinator UIで設定を眺めていると、以前検証に使用したEncryption Communicationの設定が有効化になっている事に気付き、試しにEncryption Communicationを無効化してみると約30秒毎にグレーアウトを続けていたInitiatorが正常に戻り、OnlineMachineとして認識したため原因が特定出来ました。
Encryption Communicationについて
CoordinatorとAgent間の通信を暗号化する設定になります。Encryption Communicationを有効化するとSecured Port 32104(Default)で暗号化通信を行うようです。
ドキュメントを確認すると、CoordinatorでEncryption Communicationを有効化するのみで良いらしく、Agent側の設定でSecured Portの指定等は不要との事。
セキュリティグループの設定
Secured Portの設定はIncrediBuild Agent側では不要だけどセキュリティグループでは許可が必要かな?と思いCoordinatorのセキュリティグループを確認すると、確かにSecured Port(32104)がインバウンドルールにはありませんでした。
試しにInitiatorのIPアドレスでSecured Port(32104)を許可してみると、Encryption Communicationを有効化した状態でもInitiatorのグレーアウトしなくなったため、解決しました。
ここで一つ疑問に思ったのが、IncrediBuild Cloudで作成されるHelper AgentもSecured Portで許可する必要があるのかと言うこと。結論から言えば、Helper Agentに対するSecured Portの許可は不要でした。
Helper AgentがInitiatorと同様の挙動をするのであれば、セキュリティグループでSecured Portを許可していないHelper Agentもグレーアウトすると思いましたが、IncrediBuild Cloudを有効化してHelper Agentを起動してもTimeoutで設定した時間が過ぎるまでOnline Machineとして認識されました。分散ビルド処理も問題なく実行されました。
Helper AgentをIncrediBuild Cloudではなく物理サーバや独自で作成したEC2を使用する場合はSecured Portで許可する必要があるかもしれません。
最後に
IncrediBuild Initiatorで発生したFailed to Connect to Coordinatorの原因と解決についてまとめてみました。IncrediBuildはまだ分からない事が多いので、これからも細かく検証して良ければと思います。
この記事が何方かのお役に立てば幸いです。